{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Paper experiment runs\n",
    "\n",
    "We obtained [hg19](http://hgdownload.cse.ucsc.edu/goldenpath/hg19/bigZips/chromFa.tar.gz) and [mm8](http://hgdownload.cse.ucsc.edu/goldenpath/mm8/bigZips/chromFa.tar.gz) genomes from UCSC. Then we filtered out all `_random` and `unGl` chromosomes and patches from the final FASTA file. We used [hg19 WGAC calls](http://humanparalogy.gs.washington.edu/build37/data/GRCh37GenomicSuperDup.tab) and [mm8 WGAC calls](http://mouseparalogy.gs.washington.edu/She2008_download/WGAC.tab.gz) to compare SEDEF with WGAC.\n",
    "\n",
    "SEDEF ([release v1.1, git commit e603a5c](https://github.com/vpc-ccg/sedef/tree/1.1)) was run as follows:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Start: Tue Mar 27 14:03:48 PDT 2018\n",
      "************************************************************************\n",
      "SEDEF: FASTA=genome/hg19.fa; output=out/hg19_final; jobs=80; force=y\n",
      "************************************************************************\n",
      "Running SD seeding...\n",
      "Seeding time: 9:35.32\n",
      "SD seeding done: done running 600 jobs!\n",
      "Single-core running time: 11 hours (41359.2 seconds)\n",
      "Memory used: 4888 MB\n",
      "************************************************************************\n",
      "Running SD alignment...\n",
      "Aligning time: 4:16.41\n",
      "SD alignment done: finished 1000 jobs!\n",
      "Single-core running time: 5 hours (18742.5 seconds)\n",
      "Memory used: 7070 MB\n",
      "************************************************************************\n",
      "Running SD reporting...\n",
      "Processed hit 184,021 out of 184,021... done!\n",
      "Report time: 0:05.67 (758,872 MB, user 164.57)\n",
      "Line counts:\n",
      "   186400 out/hg19_final/aligned.bed\n",
      "    67882 out/hg19_final/final.bed\n",
      "  2248064 out/hg19_final/potentials.bed\n",
      "  2363898 out/hg19_final/seeds.bed\n",
      "************************************************************************\n",
      "End: Tue Mar 27 14:17:44 PDT 2018\n",
      "************************************************************************\n",
      "Comparing WGAC with SEDEF...\n",
      "WGAC:     24,477 (51,599 lines)\n",
      "Missed:       70 hits ( 0.3%)\n",
      "Partial:     337 hits ( 1.4%)\n",
      "Full:     24,070 hits (98.3%)\n",
      "SEDEF: spans               218,880,423\n",
      "       unique               60,002,912\n",
      "       unique (uppercase)   30,357,762\n",
      "       misses                  621,749\n",
      "       misses (uppercase)      119,318\n",
      "WGAC:  spans               159,499,260\n",
      "       intersects          158,877,511\n",
      "************************************************************************\n",
      "SEDEF done! Final SDs available in out/hg19_final/final.bed\n"
     ]
    }
   ],
   "source": [
    "!./sedef.sh -f -o out/hg19_final -j 80 genome/hg19.fa -w wgac/GRCh37GenomicSuperDup.tab"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Start: Tue Mar 27 14:24:35 PDT 2018\n",
      "************************************************************************\n",
      "SEDEF: FASTA=genome/mm8.fa; output=out/mm8_final; jobs=80; force=y\n",
      "************************************************************************\n",
      "Running SD seeding...\n",
      "Seeding time: 10:20.74\n",
      "SD seeding done: done running 462 jobs!\n",
      "Single-core running time: 11 hours (40755.5 seconds)\n",
      "Memory used: 2925 MB\n",
      "************************************************************************\n",
      "Running SD alignment...\n",
      "Aligning time: 11:59.20\n",
      "SD alignment done: finished 1000 jobs!\n",
      "Single-core running time: 9 hours (35133.5 seconds)\n",
      "Memory used: 7048 MB\n",
      "************************************************************************\n",
      "Running SD reporting...\n",
      "Read 887,924 hits, wrote 0 SDs\n",
      "Report time: 1:47.61 (1874456 MB, user 825.22)\n",
      "   887924 out/mm8_final/aligned.bed\n",
      "   352991 out/mm8_final/final.bed\n",
      "  3215554 out/mm8_final/potentials.bed\n",
      "  3453215 out/mm8_final/seeds.bed\n",
      "***********************************************************************\n",
      "End: Tue Mar 27 14:54:35 PDT 2018\n",
      "************************************************************************\n",
      "Comparing WGAC with SEDEF...\n",
      "Missed:   16,471 hits (14.1%) (1992 after clean = 1.70)\n",
      "Partial:   2,604 hits ( 2.2%)\n",
      "Full:     98,138 hits (83.7%)\n",
      "SEDEF: spans               258,951,387\n",
      "       unique              119,621,060\n",
      "       unique (uppercase)   44,700,698\n",
      "       misses                1,485,615\n",
      "       misses (uppercase)      142,194\n",
      "WGAC:  spans               140,815,942\n",
      "       intersects          139,330,327\n",
      "************************************************************************\n",
      "SEDEF done! Final SDs available in out/mm8_final/final.bed\n"
     ]
    }
   ],
   "source": [
    "!./sedef.sh -f -o out/mm8_final -j 80 genome/mm8.fa -w wgac/WGAC.tab"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "With default parameters (used in the paper), indexing k-mer size is 11, while seeding k-mer size is 12.\n",
    "\n",
    "Our script automatically compares SEDEF's results with WGAC (by passing WGAC file with `-w` parameter). The final calls are reported in `final.bed`, and SDs within this file were used for generating benchmark and comparison statistics. Timings were calculated by substracting `Start` and `End` timestamps (WGAC comparison was not timed).\n",
    "\n",
    "### Filtering spurious misses\n",
    "\n",
    "Since WGAC data contains many questinable calls, we filter out all calls which fail SEDEF's quality filters (e.g. number of uppercase letters, length etc) to make the comparison fair. In order to run this, you will need [SEDEF v1.1](https://github.com/vpc-ccg/sedef/tree/1.1) that was used to generate paper results (clean-up module, a.k.a. `wgac manual`, was removed in later versions).\n",
    "\n",
    "In the following command, WGAC data is stored in `WGAC_hg19.tab`, while SEDEF calls (used for generating WGAC calls that SEDEF cannot detect) are in `hg19/final.bed` (same for `mm8`). Note that file `final.misses.txt` is generated by `sedef.sh` if you pass it `-w` parameter as specified above.\n",
    "\n",
    "```bash\n",
    "for G in hg19 mm8 ; do\n",
    "    # Generate BED and alignments for WGAC miss entries\n",
    "    ./sedef wgac manual $G.fa x < $G/final.misses.txt > temp \n",
    "    # Run QC on these misses\n",
    "    ./sedef stats generate $G.fa temp |\\\n",
    "        sort -k1,1V -k9,9r -k10,10r -k4,4V -k2,2n -k3,3n -k5,5n -k6,6n |\\\n",
    "        uniq > $G.misses\n",
    "    # Count number of misses which passed QC\n",
    "    echo -ne $G\" \"; wc -l $G.misses\n",
    "done\n",
    "# Expected output:\n",
    "# hg19 47 hg19.misses\n",
    "# mm8 1992 mm8.misses\n",
    "```\n",
    "\n",
    "As can be seen, SEDEF misses for real only 1,992 SDs from mm8 (all other \"misses\" are filtered by quality control during `stats generate`."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Comparison with other tools (hg19)\n",
    "\n",
    "Final calls of these tools are [available here](http://cb.csail.mit.edu/cb/sedef/other.tar.gz).\n",
    "\n",
    "### Minimap2\n",
    "\n",
    "[Minimap2 b81d455](https://github.com/lh3/minimap2/commit/b81d45510ef998762d7084eae93044d85c0a3b8a) was run as follows:\n",
    "\n",
    "```bash\n",
    "# Run minimap2\n",
    "for i in `seq 1 22` X Y; do for j in `seq 1 22` X Y; do\n",
    "    if ! [[ \"$j\" < \"$i\" ]]; then \n",
    "        echo minimap2 -cx asm5 -t8 --cs \"chr$i.fa\" \"chr$j.fa\" \"> chr$i-chr$j.paf\"\n",
    "    fi\n",
    "done ; done | parallel -j\n",
    "\n",
    "# Convert to BED\n",
    "cat *.paf | awk '\n",
    "    BEGIN{OFS=\"\\t\"} \n",
    "    { if (! ($1==$6 && $3==$8 && $4==$9)) { print $1, $3, $4, $6, $8, $9, $1\":\"$3, 0, \"+\", $5, $10 } }'\\\n",
    "    > minimap2.bed\n",
    "\n",
    "# Check SD overlap with WGAC\n",
    "bedtools pairtopair -a GRCh37GenomicSuperDup.bed -b minimap2.bed  | wc -l\n",
    "# 14039 hits out of 48931\n",
    "sort -k1,1 -k2,2n GRCh37GenomicSuperDup.bed | bedtools merge > wgac-regions.bed\n",
    "```\n",
    "\n",
    "### MUMmer/nucmer\n",
    "\n",
    "[MUMmer/nucmer v3.23](http://mummer.sourceforge.net) was run as follows:\n",
    "\n",
    "```bash\n",
    "# Run nucmer\n",
    "for i in `seq 1 22` X Y; do for j in `seq 1 22` X Y; do\n",
    "    if ! [[ \"$j\" < \"$i\" ]]; then \n",
    "        echo nucmer -p \"chr$i-chr$j\" \"$chr$i.fa\" \"$chr$j.fa\"\n",
    "    fi\n",
    "done ; done | parallel -j80mkdir nucmer\n",
    "\n",
    "# Convert to BED\n",
    "for i in *.delta; do\n",
    "    k8 ~/git/minimap2/misc/paftools.js delta2paf $i |\\ \n",
    "        awk 'BEGIN{OFS=\"\\t\"} \n",
    "        { if (! ($1==$6 && $3==$8 && $4==$9)) { print $1, $3, $4, $6, $8, $9, $1\":\"$3, 0, \"+\", $5, $10 } }' |\\\n",
    "        awk '{ if ($3-$2 >= 1000 || $6 - $5 >=1000) { print } }' > $i.bed\n",
    "done\n",
    "\n",
    "# Check SD/coverage overlap with WGAC\n",
    "cat *.delta.bed > nucmer.bed\n",
    "bedtools pairtopair -a GRCh37GenomicSuperDup.bed -b nucmer.bed | wc -l\n",
    "# 48337 out of 48931\n",
    "```\n",
    "\n",
    "### SDDetector\n",
    "\n",
    "[SDDetector 996b1d8](https://github.com/nlapalu/SDDetector/commit/996b1d89e5749aa3a0a2dd79165c066de0aa6c16) was run with BLAST 2.2.31+ as follows (note that you first need to run Nucmer as specified above):\n",
    "\n",
    "```bash\n",
    "blast_pairs() { # Requires nucmer results to mask the genome\n",
    "    for i in `seq 1 22` X Y; do\n",
    "        maskFastaFromBed -fi chr${i}.fa -fo chr${i}_masked.fa -bed nucmer.bed -soft\n",
    "        convert2blastmask -in \"chr${i}_masked.fa\" -parse_seqids -masking_algorithm TE \\\n",
    "            -masking_options \"TE\" -outfmt maskinfo_asn1_bin -out \"chr${i}_masked.asnb\"\n",
    "        makeblastdb -dbtype nucl -in \"chr${i}_masked.fa\" -out \"chr${i}_masked\" \\\n",
    "            -parse_seqids -mask_data \"chr${i}_masked.asnb\"\n",
    "    done\n",
    "\n",
    "    for i in `seq 1 22` X Y; do for j in `seq 1 22` X Y; do\n",
    "        if ! [[ \"$j\" < \"$i\" ]]; then\n",
    "            echo blastn -num_threads 20 -task megablast -db chr${j}_masked \\\n",
    "                -query chr${i}_masked.fa -out chr${i}_chr${j}_blast.tab \\\n",
    "                -outfmt \"6 qseqid sseqid qstart qend sstart send length nident\" \\\n",
    "                -db_soft_mask 100\n",
    "        fi\n",
    "    done ; done | parallel -j\n",
    "}\n",
    "\n",
    "# Run BLAST and SDDetector in parallel on each pair of chromosomes\n",
    "echo `date`: begin >> log.txt\n",
    "blast_pairs\n",
    "echo `date`: run jobs >> log.txt\n",
    "for i in `seq 1 22` X Y; do for j in `seq 1 22` X Y; do\n",
    "    if ! [[ \"$j\" < \"$i\" ]]; then\n",
    "        echo segmental_duplication_detector.py \\\n",
    "            chr${i}_chr${j}_blast.tab tab sdd.chr$i-chr$j.gff :memory: -g 600 -l 1000 -a --bed\n",
    "    fi\n",
    "done ; done | parallel -j\n",
    "echo `date`: finished >> log.txt\n",
    "\n",
    "# Get BED files\n",
    "cat *.gff | python gff2bedpe.py > sdd.all.bedpe\n",
    "cat sdd.all.bedpe | awk '{OFS=\"\\t\"; print $1,$2,$3; print $4,$5,$6;}' > sddetector.bed\n",
    "```\n",
    "\n",
    "where `gff2bedpe.py` is:\n",
    "\n",
    "```python\n",
    "import sys\n",
    "for line in sys.stdin:\n",
    "    row = line.strip().split(\"\\t\")\n",
    "    if row[2] == \"match_part\":\n",
    "        target = next(v for k, v in (p.split(\"=\", 1) for p in row[8].split(\";\")) if k == \"Target\")\n",
    "        target = target.split()\n",
    "        print(\"\\t\".join([row[0], row[3], row[4], target[0], target[1], target[2], row[1], row[5], \"+\", row[6]]))\n",
    "```\n",
    "\n",
    "### Comparison with WGAC\n",
    "\n",
    "We used SEDEF's diff tool to compare WGAC calls and BEDs generated by other tools as follows:\n",
    "\n",
    "```bash\n",
    "sedef stats diff hg19.fa minimap2.bed GRCh37GenomicSuperDup.tab\n",
    "# SEDEF reading done (in 10,029, miss 268,318)!\n",
    "# WGAC reading done!\n",
    "# SEDEF: spans                53,268,156\n",
    "#        unique                1,076,268\n",
    "#        unique (uppercase)      585,683\n",
    "#        misses              107,307,372\n",
    "#        misses (uppercase)   53,865,236\n",
    "# WGAC:  spans               159,499,260\n",
    "#        intersects           52,191,888\n",
    "\n",
    "sedef stats diff hg19.fa nucmer.bed GRCh37GenomicSuperDup.tab\n",
    "# SEDEF reading done (in 55,043, miss 11,359,114)!\n",
    "# WGAC reading done!\n",
    "# SEDEF: spans               142,568,754\n",
    "#        unique               13,893,354\n",
    "#        unique (uppercase)    8,067,967\n",
    "#        misses               30,823,860\n",
    "#        misses (uppercase)   14,221,542\n",
    "# WGAC:  spans               159,499,260\n",
    "#        intersects          128,675,400\n",
    "\n",
    "sedef stats diff hg19.fa sddetector.bed GRCh37GenomicSuperDup.tab\n",
    "# SEDEF reading done (in 7,092, miss 196)!\n",
    "# WGAC reading done!\n",
    "# SEDEF: spans                30,149,375\n",
    "#        unique                1,472,453\n",
    "#        unique (uppercase)      850,598\n",
    "#        misses              130,822,338\n",
    "#        misses (uppercase)   62,751,626\n",
    "# WGAC:  spans               159,499,260\n",
    "#        intersects           28,676,922\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Simulations \n",
    "\n",
    "`python/simulations.py` generates the simulated data used for SEDEF evaluation. \n",
    "SEDEF is called via its Python module located in `python` directory. To build please run\n",
    "\n",
    "```bash\n",
    "make -j -B libsedef # from the root\n",
    "cd python\n",
    "```\n",
    "\n",
    "Make sure to set `PYTHON_VERSION`, `PYTHON_INCLUDE`, `BOOST_LIB` and `BOOST_INC` variables if your Boost/Python are in non-standard directories. Consult `Makefile` for examples.\n",
    "\n",
    "We can get simulation results by running (within `python` directory):"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "!python2 simulations.py"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This generates 1,000 random sequences for each error rate ranging from 1 to 30 (totalling 30,000 simulations). You can generate random SDs from a given FASTA file (e.g. `chr1`) by commenting line 348 (near the end of the file in `__main__`) and uncommenting line 349. \n",
    "\n",
    "We can plot these results as follows. Note that results might not be 100% identical to those in the paper due to the different random seed, as I forgot to pre-set radnom seed initially. However, this does not change the nature of the results."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x110732dd0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<ggplot: (285761481)>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "from plotnine import *\n",
    "\n",
    "df = pd.read_csv('output-rand.txt', sep=';', index_col=False)\n",
    "(ggplot(df, aes(x='error', y='hits')) +\n",
    " geom_line() + \n",
    " ylim(990,1000) +\n",
    " labs(x = u\"Edit error $\\delta$\", y=\"SDs detected by SEDEF\", title=\"SEDEF's performance on simulated SDs\") +\n",
    " theme_classic() +\n",
    " theme(text=element_text(family=['Helvetica']))\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x110ba5190>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<ggplot: (285842817)>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.read_csv('output-chr1.txt', sep=';', index_col=False)\n",
    "(ggplot(df, aes(x='error', y='hits')) +\n",
    " geom_line() + \n",
    " ylim(994,1000) +\n",
    " labs(x = u\"Edit error $\\delta$\", y=\"SDs detected by SEDEF\", \n",
    "      title=\"SEDEF's performance on simulated SDs (chr1)\") +\n",
    " theme_classic() +\n",
    " theme(text=element_text(family=['Helvetica']))\n",
    ")"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.15"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
